Pearson 相关系数

考虑一个有两个特征的数据集 : $x$ 和 $y_{\circ}$ 每个特征有 $n$ 个值, 所以 $x$ 和 $y$ 是 $n$ 个元组。 $x$ 的第一个值 $x_{1}$ 对应 $y$ 的第一个值 $y_{1}, x$ 的第二个值 $x_{2}$ 对应 $y$ 的第二个值 $y_{2}$, 以此类推。那么, 就有 $n$ 对对应的数值: $\left(x_{1}, y_{1}\right)$, $\left(x_{2}, y_{2}\right)$, 以此类推。这些 $x-y$ 对中的每一个都代表一个单一的观察。 皮尔逊相关系数是对两个特征之间的线性关系的衡量。它是 $x$ 和 $y$ 的协方差与它们的标准差的乘积的 比率。它通常用字母 $r$ 表示, 并称为皮尔逊的 $r$ 。我们可以用这个方程式来表示这个值的数学性质。 $$ r=\sum_{i}\left(\left(x_{i}-\operatorname{mean}(x)\right)\left(y_{i}-\operatorname{mean}(y)\right)\right)\left(\sqrt{\sum_{i}\left(x_{i}-\operatorname{mean}(x)\right)^{2}} \sqrt{\sum_{i}\left(y_{i}-\operatorname{mean}(y)\right)^{2}}\right)^{-1} $$ 这里, $i$ 的值为 $1,2, \ldots, n \circ x$ 和 $y$ 的平均值用 $\operatorname{mean}(\mathrm{x})$ 和 mean(y) 来表示。这个公式表明, 如果较大的 $x$ 值倾向于对应较大的 $y$ 值, 反之亦然, 则 $r$ 为正。另一方面, 如果较大的 $x$ 值大多与较小的 $y$ 值相 关, 反之亦然, 则 $r$ 为负。 以下是关于皮尔逊相关系数的一些重要事实:

简而言之,$r$的绝对值越大,表明相关性越强,越接近于线性函数。$r$的绝对值越小,表示相关性越弱。

Spearman相关系数

两个特征之间的Spearman相关系数是它们的等级值之间的Pearson相关系数。它的计算方法与Pearson相关系数相同, 但考虑到了它们的秩(排序,rank)而不是它们的数值。它通常用希腊字母 $\rho(p)$ 表示, 称为 Spearm an's rho. 假设有两个 $n$ 元组, $x$ 和 $y$, 其中 $\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots \ldots$ 是作为对应值的观察值对。我们可以用与 Pearson系数相同的方法来计算Spearman相关系数 s。使用rank而不是 $x$ 和 $y$ 的实际值。 以下是关于spearman相关系数的一些重要事实。

Kendall相关系数

再次开始考虑两个 $\mathrm{n}$ 元组, $x$ 和 $y$ 。每一个 $x-y$ 对 $\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right), \ldots$ 是一个单一的观察。一对观察值 $\left(x_{i}, y_{i}\right)$ 和 $\left(x_{j}, y_{j}\right)$, 其中 $i<j$, 将是三种情况之一。

Kenda11 相关系数比较了数据的一致和不一致对的数量。这个系数是基于协调对和不协调对的数量相对于 $x-y$ 对数量的差异。它通常用希腊字母 $\operatorname{tau}($ ( 表示, 并称为 Kenda11's tau 。

Kendall相关系数的计算方法是 $\tau=\left(n^{+}-n^{-}\right) / \sqrt{\left(\left(n^{+}+n^{-}+n^{x}\right)\left(n^{+}+n^{-}+w\right)\right)}$, 其中。

$$ \begin{gathered} \tau=\left(2 /(n(n-1)) \sum_{i j}\left(\operatorname{sign}\left(x_{i}-x_{j}\right) \operatorname{sign}\left(y_{i}-y_{j}\right)\right) \text { fori }<j\right). \\ \text { wherei }=1,2, \ldots, n-1 \text { and } j=2,3, \ldots, n \end{gathered} $$

符号函数 $\operatorname{sign}(z)$ 在 $z<0$ 时为 $-1, z=0$ 时为 $0, z>0$ 时为 1 。 关于Kendall相关系数的一些重要事实如下。

使用Pandas库计算相关性

生成数据并绘图

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

xarray = np.linspace(0,10,100)#生成从0倒10,100个数
yarray = xarray**3+np.random.normal(0,100,100) # y=x^3+正态扰动项

plt.scatter(xarray,yarray)
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

转换为Pandas Series数据格式

xseries = pd.Series(xarray) # 转换Pandas Series数据类型
yseries = pd.Series(yarray)

计算相关性 Pearson

xseries.corr(yseries,method='pearson') # Pearson相关系数

结果:0.840850116329609

Spearman

xseries.corr(yseries,method='spearman') # Spearman相关系数

结果:0.8455325532553255

Kendall

xseries.corr(yseries,method='kendall') # Kendall相关系数

结果:0.6755555555555557

参考资料: